home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1994-09-22 | 1.3 KB | 75 lines |
-
- IMPLEMENTATION MODULE PL0Generator;
-
- FROM TextWindows IMPORT Window, OpenTextWindow, WriteString, Write,
- WriteLn, WriteCard, CloseTextWindow;
-
- FROM Windows IMPORT WindowElements, Title;
-
- FROM PL0Interpreter IMPORT Instruction, maxfct, maxadr, code;
-
- VAR
- L : CARDINAL;
- win : Window;
- mnemonic : ARRAY [0..maxfct],[0..3] OF CHAR;
-
-
- PROCEDURE InitGenerator;
- BEGIN
- L := 0;
- Write(win,14C);
- END InitGenerator;
-
-
- PROCEDURE Label() : CARDINAL;
- BEGIN
- RETURN L;
- END Label;
-
-
- PROCEDURE Gen(x,y,z : CARDINAL);
- BEGIN
- IF L>=maxadr THEN HALT; END;
- WITH code[L] DO
- f := x;
- l := y;
- a := z;
- END;
- WriteCard(win,L,4);
- WriteString(win,mnemonic[x]);
- WriteCard(win,y,3);
- WriteCard(win,z,6);
- WriteLn(win);
- INC(L);
- END Gen;
-
-
- PROCEDURE fixup(x : CARDINAL);
- BEGIN
- code[x].a := L;
- WriteString(win,"fixup at");
- WriteCard(win,x,4);
- WriteLn(win);
- END fixup;
-
-
- PROCEDURE EndGenerator;
- BEGIN
- CloseTextWindow(win);
- END EndGenerator;
-
-
- BEGIN
- OpenTextWindow(win,WindowElements{Title},215,161,210,155,"CODE");
- mnemonic[0] := " LIT";
- mnemonic[1] := " OPR";
- mnemonic[2] := " LOD";
- mnemonic[3] := " STO";
- mnemonic[4] := " CAL";
- mnemonic[5] := " INT";
- mnemonic[6] := " JMP";
- mnemonic[7] := " JPC";
- END PL0Generator.
-
-
-